﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using fadmin.Cliente;

namespace fadmin
{
    public partial class frmNovoCliente : Form
    {
        String instaciaDoFormCliente;
        
        public frmNovoCliente()
        {
            InitializeComponent();
            instaciaDoFormCliente = "0";
        }

        public frmNovoCliente(string codigo)
        {
            InitializeComponent();
            instaciaDoFormCliente = codigo;
        }


        private void frmNovoCliente_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode.ToString() == "Escape")
            {
                this.Close();
            }

            
        }

        private void btnSalvar_Click(object sender, EventArgs e)
        {
            //Salva os dados do cliente            
            if (validarDados())
            {
                if (instaciaDoFormCliente.Equals("0"))
                {
                    try
                    {

                        ClienteDTO cliente = preencheCliente();
                        ClienteManager manager = new ClienteManager();
                        manager.inserir(cliente);
                        MessageBox.Show("Dados inseridos no sistema com sucesso!","Dados Salvos",MessageBoxButtons.OK,MessageBoxIcon.Information);
                        LimparCampos();
                        
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Houve um erro ao tentar salvar os dados, contacte o desenvolvedor" + ex.Message.ToString(),"Erro", MessageBoxButtons.OK,MessageBoxIcon.Error);
                    }
                }
                else
                {
                    try
                    {
                        ClienteDTO cliente = preencheCliente();
                        ClienteManager manager = new ClienteManager();
                        manager.atualizar(cliente);
                        MessageBox.Show("Dados atualizados com sucesso!", "Dados Salvos", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.Close();

                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Houve um erro ao tentar salvar os dados, contacte o desenvolvedor" + ex.Message.ToString(),"Erro", MessageBoxButtons.OK,MessageBoxIcon.Error);
                    }

                }

            }            

        }

        private ClienteDTO preencheCliente()
        {
            ClienteDTO cliente = new ClienteDTO();
            cliente.nome = txtNome.Text;
            cliente.nascimento = Convert.ToDateTime(txtNascimento.Text);
            cliente.telefone = txtTelefone.Text;
            cliente.celular = txtCelular.Text;
            cliente.rua = txtRua.Text;
            cliente.numero = txtNumero.Text;
            cliente.complemento = txtComplemento.Text;
            cliente.bairro = txtBairro.Text;
            cliente.cidade = txtCidade.Text;
            cliente.uf = txtUF.Text;
            cliente.email = txtEmail.Text;
            cliente.datacadastro = DateTime.Now;
            cliente.observacao = txtObservacao.Text;
            
            cliente.codigo_cliente = Convert.ToInt32(instaciaDoFormCliente);
            return cliente;
        }


        private Boolean validarDados()
        {
            if (txtNome.Text.Trim().Equals(""))
            {
                errorProvider1.SetError(txtNome, "O Nome é obrigatório");
                return false;
            }
            else if (txtTelefone.Text.Trim().Equals(""))
            {
                errorProvider1.SetError(txtTelefone, "O Telefone é obrigatório");
                return false;
            }
            else
            {
                return true;
            }
        }

        private void btnLimparCampos_Click(object sender, EventArgs e)
        {
            LimparCampos();
        }

        private void LimparCampos()
        {
            txtNome.Text = "";
            txtNascimento.Text = "";
            txtTelefone.Text = "";
            txtCelular.Text = "";
            txtRua.Text = "";
            txtNumero.Text = "";
            txtComplemento.Text = "";
            txtBairro.Text = "";
            txtComplemento.Text = "";
            txtUF.Text = "";
            txtEmail.Text = "";
            txtObservacao.Text = "";
            txtCidade.Text = "";
        }

        private void frmNovoCliente_Load(object sender, EventArgs e)
        {
            //txtNascimento.Text = Convert.ToString(DateTime.Now.ToShortDateString());
            if (Convert.ToInt32(instaciaDoFormCliente) > 1)
            {
                List<ClienteDTO> cliente = new List<ClienteDTO>();

                ClienteDTO dto = new ClienteDTO();
                ClienteDAO dao = new ClienteDAO();
                dto.codigo_cliente = Convert.ToInt32(instaciaDoFormCliente);
                cliente = dao.consultar(dto);

                if (cliente.Count() == 1)
                {
                    txtNome.Text = cliente[0].nome.ToString();
                    txtNascimento.Text = cliente[0].nascimento.ToString();
                    txtTelefone.Text = cliente[0].telefone;
                    txtCelular.Text = cliente[0].celular;
                    txtRua.Text = cliente[0].rua;
                    txtNumero.Text = cliente[0].numero;
                    txtComplemento.Text = cliente[0].complemento;
                    txtBairro.Text = cliente[0].bairro;
                    txtUF.Text = cliente[0].uf;
                    txtEmail.Text = cliente[0].email;
                    txtObservacao.Text = cliente[0].observacao;
                    txtCidade.Text = cliente[0].cidade;
                }



            }
        }




    }
}
